const EOF = Symbol("EOF") // EOF: End of File 利用Symbol唯一性特点

function data(c) { // 状态机 用作状态迁移

}


module.exports.parseHTML = function parseHTML(html) {
  let state = data // 初始状态一般命名为data
  for(let c of html) { // 对每个字符循环，并使用状态机进行判断处理
    state = state(c)
  }
  // 状态机 强迫一些节点结束 额外给一个无效的字符
  // (因为html最后会有文件终结，有的文本节点可能没有结束的状态)
  state = state(EOF)
}

// 第一步：HTML Parse模块的文件拆分
// 为了方便文件管理，把parser单独拆到文件中
// parser接受HTML文本作为参数，并返回一个DOM树

// 第二步：用FSM 来实现HTML的分析
// 在HTML 标准中，已经规定了HTML的状态
// https://html.spec.whatwg.org/multipage/ 的 Tokenization 章节 是html解析的词法 状态机 
// Toy-Browser 只挑选其中一部分状态，实现一个简单版本
